//package com.gzdh.tang.modu.job;
//
//import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
//import com.gzdh.tang.config.weixin.WXEntity;
//import com.gzdh.tang.config.weixin.WXPay;
//import com.gzdh.tang.modu.entity.Addr;
//import com.gzdh.tang.modu.entity.TangOrder;
//import com.gzdh.tang.modu.service.TangAddrService;
//import com.gzdh.tang.modu.service.TangOrderService;
//import com.xxl.job.core.biz.model.ReturnT;
//import com.xxl.job.core.handler.IJobHandler;
//import com.xxl.job.core.handler.annotation.JobHandler;
//import com.xxl.job.core.log.XxlJobLogger;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Component;
//
//import java.util.HashMap;
//import java.util.List;
//import java.util.Map;
//
//@JobHandler(value = "OrderCheckBJobHandler")
//@Component
//public class OrderCheckBJob extends IJobHandler {
//
//
//    @Autowired
//    TangOrderService tangOrderService;
//    @Autowired
//    TangAddrService addrService;
//
//    @Override
//    public ReturnT<String> execute(String s) throws Exception {
//        List<TangOrder> tangOrderList = tangOrderService.list(new QueryWrapper<TangOrder>()
//                .lambda().eq(TangOrder::getPayChannel, 1)
//                .eq(TangOrder::getPayState, 2));
//        XxlJobLogger.log("查询到未知订单条数：【" + tangOrderList.size() + "】");
//        List<Addr> addrList = addrService.list();
//
//        for (TangOrder goo : tangOrderList) {
//            checkOrder(goo, addrList.stream().filter(u -> u.getAddrNo().equals(goo.getAddr())).findFirst().orElse(null));
//        }
//        return SUCCESS;
//    }
//
//    private void checkOrder(TangOrder tangOrder, Addr addr) {
//        try {
//            if (addr == null) {
//                XxlJobLogger.log(tangOrder.getOrders() + "地点有误，查单失败");
//                return;
//            }
//            WXEntity wxEntity = new WXEntity();
//            WXPay wxPay = new WXPay(wxEntity);
//            //start pay
//            Map<String, String> reqMap = new HashMap<>();
//            reqMap.put("out_trade_no", tangOrder.getOrders());
//            reqMap.put("sub_mch_id", addr.getSubMchId());
//            Map<String, String> resMap = wxPay.orderQuery(reqMap);
//            if (!"SUCCESS".equals(resMap.get("return_code")) && !"SUCCESS".equals(resMap.get("return_code"))) {
//                XxlJobLogger.log(tangOrder.getOrders() + "支付系统错误，需要进行查单");
//            } else if ("SUCCESS".equals(resMap.get("trade_state")) || "ACCEPT".equals(resMap.get("trade_state"))) {
//                //支付成功订单
//                XxlJobLogger.log(tangOrder.getOrders() + "支付成功");
//                tangOrderService.updateOrderPayState(tangOrder.getId(), 1);
//            } else if ("USERPAYING".equals(resMap.get("trade_state"))) {
//                XxlJobLogger.log(tangOrder.getOrders() + "等待用户输入密码");
//            } else {
//                XxlJobLogger.log(tangOrder.getOrders() + "支付失败");
//                tangOrderService.updateOrderPayState(tangOrder.getId(), 3);
//            }
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//    }
//}
